Don't recreate a tracking rect if it didn't change, fixes focus event
authorRichard Hult <richard@imendio.com>
Fri, 25 Jan 2008 13:19:02 +0000 (13:19 +0000)
committerRichard Hult <rhult@src.gnome.org>
Fri, 25 Jan 2008 13:19:02 +0000 (13:19 +0000)
2008-01-25  Richard Hult  <richard@imendio.com>

* gdk/quartz/GdkQuartzView.c: Don't recreate a tracking rect if it
didn't change, fixes focus event issues for undecorated windows.

svn path=/trunk/; revision=19402

ChangeLog
gdk/quartz/GdkQuartzView.c

index 3279b3f76a29bdd08bf74902912dc1c6f966bc50..3c0fbc30590a55fe4a97b73645e38037ce5fede6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-25  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/GdkQuartzView.c: Don't recreate a tracking rect if it
+       didn't change, fixes focus event issues for undecorated windows.
+
 2008-01-25  Richard Hult  <richard@imendio.com>
 
        * gdk/quartz/gdkwindow-quartz.c: Fix compile warnings (add missing
index 1521b160575e6ae45433c59cd64a5ad63f5c44f2..cabbcbe5ad22795b9fca3fd1a45317f68dccb79d 100644 (file)
 
 -(void)setBounds:(NSRect)bounds
 {
+  NSRect old_bounds;
+  gboolean changed = FALSE;
+
+  old_bounds = [self bounds];
+  if (old_bounds.origin.x != bounds.origin.x ||
+      old_bounds.origin.y != bounds.origin.y ||
+      old_bounds.size.width != bounds.size.width ||
+      old_bounds.size.height != bounds.size.height)
+    {
+      changed = TRUE;
+    }
+  
   [super setBounds:bounds];
-  [self updateTrackingRect];
+
+  if (changed)
+    [self updateTrackingRect];
 }
 
 @end